<!DOCTYPE html>
<html lang=''>

<head>
  <meta charset='UTF-8'>
  <meta http-equiv='X-UA-Compatible' content='IE=edge'>
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  <title>Document</title>
  <script src='./vue.js'></script>
  <style>
    [v-cloak] {
      display: none
    }
  </style>
</head>

<body>
  <div id='app'>

    <!-- pre 标签是具备保留空白符和换行等用的 -->
    <pre>
      你
      好     世                   界
      <code>
        <span><</span><span>span</span><span>></span>
      </code>
    </pre>

    <!-- v-pre 不将双大括号的内容当做 js 表达式进行解析，直接渲染内容 -->
    <h1 v-pre> {{ message }} </h1>

    <h1>{{count}}</h1>
    <!-- v-once 使得其内容只会被 渲染一次，跳过后期的所有更新 -->
    <h1 v-once>{{count}}</h1>
    <button @click="count++">点击增加</button>

    <hr>

    <!-- v-memo: 做缓存用的，我们内部的内容只会在我们的依赖项发生改变的时候才会重新渲染 -->
    <!-- [count] 配置的依赖项，可以配置多个依赖项 -->
    <div v-memo="[count]">
      {{ message }}
    </div>

    <button @click="message = '床前明月光'">修改 message</button>
    <button @click="count++">修改 count</button>

    <hr>
    <hr>
    <hr>

    <!-- v-cloak 作用是将无法立即显示的内容先隐藏掉，当什么时候准备好显示后直接渲染即可 -->
    <h1 v-cloak>{{message}}</h1>

  </div>
</body>
<script>
  const app = Vue.createApp({
    data () {
      return {
        message: '一段优美的句子。',
        count: 100
      }
    },
  })
  setTimeout(() => {
    app.mount('#app')
  }, 5000)

</script>

</html>
